def counter_format():
    '''闭包函数实现文件的计数'''

    # 函数的局部变量，一般函数执行完后即销毁
    # 除非被内部函数引用形成闭包
    row_index = 0

    def increment(schedule_dict):
        # 嵌套函数引用了外部函数的变量
        # nonlocal表明该变量不是嵌套函数定义的
        nonlocal row_index

        # 内部函数执行时会保留row_index上一次执行的值
        row_index += 1
        # (001) 第1场[2021-11-29]操作系统安全/[4-201]信安2001班
        return '({0:03}) {1} / {2}'.format(row_index,
                                           schedule_dict['场次'],
                                           schedule_dict['考室'])
    # 嵌套函数作为外部函数的返回值
    return increment


if __name__ == "__main__":
    func_count_format = counter_format()
    # (<cell at 0x0000026FEF7C3460: int object at 0x0000026FEED96910>,)
    print(func_count_format.__closure__)
